// pages/search/search.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    goodsTypeData: [], // 请求到的商品数据
    search_value: '', // 当前搜索三级分类商品名
    search_id: '', // 当前搜索三级分类商品id
    search_data: [], // 三级分类商品数组
    search_show_data: [], // 三级分类商品展示数组
    sort_method: false, // 价格排序方式 true为升序，false为降序
    search_result_data: [], // 请求的搜索结果
    request_status: true, // 请求状态量，true允许发起请求,false阻止
    content_height: 667 // 当前页面高度，默认667
  },

  // 初始化页面
  initPage() {
    let pageHeight = 0;
    wx.getSystemInfo({
      success: (res) => {
        pageHeight = res.windowHeight;
        // console.log(pageHeight);
      },
    })
    const query = wx.createSelectorQuery();
    query.select('#searchBox').boundingClientRect();
    query.exec((res) => {
      console.log(res[0].height);
      let contentHeight = pageHeight - res[0].height;
      console.log(contentHeight);
      this.setData({
        content_height: contentHeight
      })
    })
  },
  // 筛选展示搜索数据
  get_show_data() {
    let tem_num = [];
    let data = [];
    for (let i = 0; i < 18; i++) {
      let num = Math.floor(Math.random()*(this.data.search_data.length+1));
      tem_num.push(num);
    }
    tem_num = this.arr_de_weight(tem_num);
    for (let i = 0; i < tem_num.length; i++) {
      if (this.data.search_data[tem_num[i]] != undefined) {
        data.push(this.data.search_data[tem_num[i]]);
      }
    }
    this.setData({
      search_show_data: data
    })
  },
  //跳转详情页
  enter_product_detail(e){
    let item = e.currentTarget.dataset.item;
    wx.navigateTo({
      url: '../product_detail/product_detail?good_id='+item.good_id+"&state=3",
    })
    console.log(item);
  },
  // 自定义push
  diy_push(arr, num) {
    arr[arr.length] = num;
  },
  // 数组去重
  arr_de_weight(arr) {
    let temArr = [];
    let result = [];
    for (let i = 0; i < arr.length; i++) {
      for (let j = i + 1; j < arr.length; j++) {
        if (arr[i] === arr[j]) {
          this.diy_push(temArr, j);
        }
      }
      let status = null;
      for (let k = 0; k < temArr.length; k++) {
        if (i != temArr[k]) {
          status = true;
        } else {
          status = false;
          break;
        }
      }
      if (status) {
        this.diy_push(result, arr[i]);
      }
    }
    // console.log(result);
    return result;
  },
  // 点击搜索发现显示搜索结果
  show_search_result(e) {
    let good_search_id = e.currentTarget.dataset.good_type_id;
    let good_search_name = e.currentTarget.dataset.good_type_name;
    this.setData({
      search_value: good_search_name
    })
    // console.log(good_search_id,good_search_name);
    // console.log(e);
    // 请求搜索结果
    wx.request({
      url: 'http://api_devs.wanxikeji.cn/api/goodList',
      method: 'POST',
      data: {
        good_type: good_search_id
      },
      success: (res) => {
        console.log(res.data.data.data);
        this.setData({
          search_result_data: res.data.data.data
        })
        this.goods_bubble_sort(this.data.sort_method);
      },
      fail: (err) => {
        console.log(err);
      }
    })
  },
  // 返回上一个页面
  backPage() {
    wx.navigateBack({
      delta: 1,
    })
  },
  // 搜索框触发函数
  search(e) {
    if (e.detail.keyCode == 8) {
      if (e.detail.value == '') {
        this.setData({
          search_value: ''
        })
      } else {
        this.setData({
          search_value: e.detail.value
        })
        //发起请求
        if (this.data.request_status) {
          this.setData({
            request_status: false
          })
          wx.request({
            url: 'http://api_devs.wanxikeji.cn/api/goodList',
            method: 'POST',
            data: {
              search: this.data.search_value
            },
            success: (res) => {
              this.setData({
                request_status: true,
                search_result_data: res.data.data.data
              })
              this.goods_bubble_sort(this.data.sort_method);
              // console.log(res.data.data.data);
            },
            fail: (err) => {
              this.setData({
                request_status: true
              })
              console.log(err);
            }
          })
        }
      }
    } else {
      this.setData({
        search_value: e.detail.value
      })
      //发起请求
      if (this.data.request_status) {
        this.setData({
          request_status: false
        })
        wx.request({
          url: 'http://api_devs.wanxikeji.cn/api/goodList',
          method: 'POST',
          data: {
            search: this.data.search_value
          },
          success: (res) => {
            this.setData({
              request_status: true,
              search_result_data: res.data.data.data
            })
            this.goods_bubble_sort(this.data.sort_method);
            // console.log(res.data.data.data);
          },
          fail: (err) => {
            this.setData({
              request_status: true
            })
            console.log(err);
          }
        })
      }
    }
    // console.log(e.detail);
  },
  // 改变价格排序方式
  change_sort_method(e) {
    // console.log(e);
    // console.log(this.data.search_result_data);
    if (e.currentTarget.id == 'ascending-order') {
      this.setData({
        sort_method: true
      })
      // 将搜索到的商品数据数组升序
      this.goods_bubble_sort(this.data.sort_method);
    } else {
      this.setData({
        sort_method: false
      })
      // 将搜索到的商品数据数组降序
      this.goods_bubble_sort(this.data.sort_method);
    }
  },
  // 搜索商品结果数据冒泡排序算法
  goods_bubble_sort(method) {
    let arr = JSON.parse(JSON.stringify(this.data.search_result_data));
    for (let i = 0; i < arr.length - 1; i++) {
      for (let j = 0; j < arr.length - i - 1; j++) {
        if (method) {
          if (arr[j].price - 0 > arr [j + 1].price - 0) {
            let tem = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tem;
          }
        } else {
          if (arr[j].price - 0 < arr [j + 1].price - 0) {
            let tem = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tem;
          }
        }
      }
    }
    // console.log(arr);
    this.setData({
      search_result_data: arr
    })
  },
  // 冒泡排序
  bubble_sort() {
    let arr = [3,2,4,0,1,6,5,7,-3];
    for (let i = 0; i < arr.length - 1; i++) {
      for (let j = 0; j < arr.length - i - 1; j++) {
        if (arr[j] > arr [j + 1]) {
          let tem = arr[j];
          arr[j] = arr[j + 1];
          arr[j + 1] = tem;
        }
      }
    }
    // console.log(arr);
  },
  // 获取商品分类数据（未输入搜索内容默认展示的条目）
  getGoodsType: function() {
    wx.request({
      url: 'http://api_devs.wanxikeji.cn/api/goodType',
      method: 'POST',
      data: {},
      success: ((res) => {
        // console.log(res.data.data);
        this.setData({
          goodsTypeData: res.data.data
        })
        let goodsdata =  JSON.parse(JSON.stringify(this.data.goodsTypeData));
        let temArr = [];
        for (let i = 0; i < goodsdata.length; i++) { // 遍历每一个数据对象
          if (goodsdata[i].parent_id == 0) {
            let tem = JSON.parse(JSON.stringify(goodsdata[i]));
            tem.children = [];
            temArr.push(tem);
          } else {
            for (let j = 0; j < goodsdata.length; j++) {
              if (goodsdata[i].parent_id === goodsdata[j].good_type_id && i != j) {
                // 判断数组中是否存在该父级
                if (temArr.length == 0) {
                  let temObj = JSON.parse(JSON.stringify(goodsdata[j]));
                  temObj.children = [];
                  temObj.children.push(JSON.parse(JSON.stringify(goodsdata[i])));
                  temArr.push(temObj);
                } else {
                  for (let k = 0; k < temArr.length; k++) {
                    if (temArr[k].good_type_id === goodsdata[j].good_type_id) {
                      temArr[k].children.push(JSON.parse(JSON.stringify(goodsdata[i])));
                      break;
                    } else if (k == temArr.length - 1) {
                      let temObj = JSON.parse(JSON.stringify(goodsdata[j]));
                      temObj.children = [];
                      temObj.children.push(JSON.parse(JSON.stringify(goodsdata[i])));
                      temArr.push(temObj);
                    }
                  }
                }
                break;
              }
            }
          }
        }
        // console.log(temArr);
        for (let i = 0; i < temArr.length; i++) {
          if (i != 0) {
            temArr[i].children.splice(0,1);
          }
        }
        let temParentArr = [];
        let temChildrenArr = [];
        for (let i = 0; i < temArr.length; i++) {
          if (temArr[i].parent_id == 0) {
            let tem = JSON.parse(JSON.stringify(temArr[i]));
            tem.children = [];
            temParentArr.push(tem);
          } else {
            temChildrenArr.push(JSON.parse(JSON.stringify(temArr[i])));
          }
        }
        this.setData({
          search_data: JSON.parse(JSON.stringify(temChildrenArr))
        })
        for (let i = 0; i < temParentArr.length; i++) {
          if (i == 0) {
            temParentArr[i].isActive = true;
          } else {
            temParentArr[i].isActive = false;
          }
          for (let j = 0; j < temChildrenArr.length; j++) {
            if (temChildrenArr[j].parent_id == temParentArr[i].good_type_id) {
              temParentArr[i].children.push(temChildrenArr[j]);
            }
          }
        }
        temArr = temParentArr;
        // console.log(this.data.search_data); // 打印数据

        let search_data_tem = [];
        for (let i = 0; i < this.data.search_data.length; i++) {
          for (let j = 0; j < this.data.search_data[i].children.length; j++) {
            search_data_tem.push(JSON.parse(JSON.stringify(this.data.search_data[i].children[j])));
          }
        }
        // console.log(search_data_tem);
        this.setData({
          search_data: search_data_tem
        })
        this.get_show_data();
      }),
      fail: ((err) => {
        console.log(err);
      })
    })
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // console.log(options);
    this.initPage();
    if (options.search_value != undefined) {
      this.setData({
        search_value: options.search_value,
      })
    }
    if (options.search_id != undefined) {
      this.setData({
        search_id: options.search_id,
      })
    }
    if (options.search_data != undefined) {
      this.setData({
        search_data: JSON.parse(options.search_data),
      })
      this.get_show_data(); // 去重默认展示商品类别数组数据
      // 请求搜索结果
      wx.request({
        url: 'http://api_devs.wanxikeji.cn/api/goodList',
        method: 'POST',
        data: {
          good_type: this.data.search_id
        },
        success: (res) => {
          console.log(res.data.data.data);
          this.setData({
            search_result_data: res.data.data.data
          })
          this.goods_bubble_sort(this.data.sort_method);
        },
        fail: (err) => {
          console.log(err);
        }
      })
    } else {
      this.getGoodsType();
    }
    console.log(this.data.search_value,this.data.search_id,this.data.search_show_data);
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})